﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.Postagem;
using Negocio.Usuario;

namespace qbaproject.Postagem.Editar
{
    public partial class editarPostagem : System.Web.UI.Page
    {

        int idUsuario;
        private string teTextoLink;
        private string teTags;
        public bool boRascunho;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Request.QueryString["id"] != null)
                {
                    hdfIdPostagem.Value = Request.QueryString["id"].ToString();
                    preencherTela();
                };

                carregarDdl();
            }
        }

        public void carregarDdl()
        {
            var obNUsuario = new NUsuario();

            //Carregar usuarios colaboradores
            ddlUsuarios.DataSource = obNUsuario.pegarUsuarios(null, 0, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, 0, 0, 3);
            ddlUsuarios.DataBind();
            ddlUsuarios.Items.Insert(0, new ListItem("Selecionar o usuário", "0"));

        }


        public void preencherTela()
        {
            var obNPostagem = new NPostagem();
            obNPostagem.idPostagem = Convert.ToInt32(hdfIdPostagem.Value);
            obNPostagem.pegarPostagemPorId();
            txtTeTitulo.Text = obNPostagem.teTitulo;
            edtTePostagem.Content = obNPostagem.tePostagem;
            ckbBoAceitaComentarios.Checked = (obNPostagem.boAceitaComentario == "S" ? true : false);
            ddlUsuarios.SelectedValue = Convert.ToString(obNPostagem.idUsuario);

            var obNTagPostagem = new NTagPostagem();

            var ds = new DataSet();
            ds = obNTagPostagem.pegarTagsPostagensPorPostagem(obNPostagem.idPostagem);
            foreach (DataRow dataRow in ds.Tables[0].Rows)
            {
                txtTeTags.Text += dataRow["te_tag"].ToString()+",";

            }
            if (txtTeTitulo.Text.Length > 2)
            {
                txtTeTags.Text = txtTeTags.Text.Substring(0, txtTeTitulo.Text.Length - 2);                
            }
            




        }

        protected void lnk_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Postagem/Consultar/consultarPostagem.aspx");
        }

        protected void lkbAlterar_Click(object sender, EventArgs e)
        {
            Alterar(false);
        }

        protected void lkbRascunho_Click(object sender, EventArgs e)
        {
            Alterar(true);
        }

        public bool verificarForm()
        {
            var boForm = true;

            var idPostagem = Convert.ToInt32(hdfIdPostagem.Value);

            idUsuario = Convert.ToInt32(ddlUsuarios.SelectedValue);
            if (idUsuario == 0)
            {
                boForm = false;
                lblDdlUsuariosObrigatoria.Text = "O usuário é obrigatório!";
            }
            else
            {
                lblDdlUsuariosObrigatoria.Text = "";
            }

            if (string.IsNullOrEmpty(txtTeTitulo.Text))
            {
                boForm = false;
                lblTxtTeTituloObrigatorio.Text = "O título é obrigatório!";
            }
            else
            {
                lblTxtTeTituloObrigatorio.Text = "";
            }



            if (string.IsNullOrEmpty(edtTePostagem.Content))
            {
                boForm = false;
                lblEdtTePostagemObrigatorio.Text = "A avaliação é obrigatória!";
            }
            else
            {
                lblEdtTePostagemObrigatorio.Text = "";
            }

            var obNPostagem = new NPostagem();
            if (obNPostagem.contarPostagensPorTitulo(txtTeTitulo.Text, idPostagem) > 0)
            {
                boForm = false;
                lblTeTituloNaoOk.Text = "Título já existente";
                lblTeTituloOk.Text = "";
            }
            else
            {
                lblTeTituloNaoOk.Text = "Título permitido";
                lblTeTituloOk.Text = "";
            }

            return boForm;
        }

        public static string FormatarTitulo(string texto)
        {
            texto = texto.ToUpper();
            texto = texto.Trim();
            texto = texto.Replace(" ", "_");

            texto = texto.Normalize(NormalizationForm.FormD);
            StringBuilder sb = new StringBuilder();

            foreach (char c in texto)
            {
                if (CharUnicodeInfo.GetUnicodeCategory(c) != UnicodeCategory.NonSpacingMark)
                {
                    sb.Append(c);
                }
            }
            return sb.ToString();
        }

        protected void Alterar(bool boRascunho = false)
        {
            if (verificarForm())
            {
                var obNPostagem = new NPostagem();

                obNPostagem.tePostagem = edtTePostagem.Content.Trim();
                obNPostagem.teTitulo = txtTeTitulo.Text.Trim();
                obNPostagem.dtPostagem = DateTime.Now;
                obNPostagem.dtPostagemGmt = DateTime.UtcNow;
                obNPostagem.csStatus = boRascunho ? "R" : "P";
                obNPostagem.csTipoPostagem = "-";
                obNPostagem.boAceitaComentario = ckbBoAceitaComentarios.Checked ? "S" : "N";
                teTextoLink = txtTeTitulo.Text.Trim();
                obNPostagem.teTextoLink = FormatarTitulo(teTextoLink);
                obNPostagem.idUsuario = Convert.ToInt32(ddlUsuarios.SelectedValue);

                if (obNPostagem.Alterar(Convert.ToInt32(hdfIdPostagem.Value)))
                {
                    divMsnEditarSucesso.Visible = true;
                    divMsnEditarAtencao.Visible = false;
                }
                else
                {
                    divMsnEditarSucesso.Visible = false;
                    divMsnEditarAtencao.Visible = true;
                }
            }
        }

        protected void txtTeTitulo_TextChanged(object sender, EventArgs e)
        {

            var idPostagem = Convert.ToInt32(hdfIdPostagem.Value);
            if (!string.IsNullOrEmpty(txtTeTitulo.Text))
            {
                var obNPostagem = new NPostagem();

                if (obNPostagem.contarPostagensPorTitulo(txtTeTitulo.Text, idPostagem) > 0)
                {
                    lblTeTituloNaoOk.Text = "Título já existente";
                    lblTeTituloOk.Text = "";
                }
                else
                {
                    lblTeTituloOk.Text = "Título permitido";
                    lblTeTituloNaoOk.Text = "";
                }
            }
            else
            {
                lblTeTituloOk.Text = "";
                lblTeTituloNaoOk.Text = "";
            }

        }
    }
}